package com.docparser.processor;

import java.util.HashMap;
import java.util.Map;

/**
 * 处理三角函数相关的转换逻辑。
 */
public class TrigFunctionProcessor {
    /**
     * 三角函数名称映射
     */
    private static final Map<String, String> TRIG_FUNCTIONS = new HashMap<String, String>() {{
        // 基本三角函数
        put("sin", "\\sin");
        put("cos", "\\cos");
        put("tan", "\\tan");
        put("cot", "\\cot");
        put("sec", "\\sec");
        put("csc", "\\csc");
        
        // 反三角函数
        put("arcsin", "\\arcsin");
        put("arccos", "\\arccos");
        put("arctan", "\\arctan");
        put("arccot", "\\arccot");
        put("arcsec", "\\arcsec");
        put("arccsc", "\\arccsc");
        
        // 双曲三角函数
        put("sinh", "\\sinh");
        put("cosh", "\\cosh");
        put("tanh", "\\tanh");
        put("coth", "\\coth");
        put("sech", "\\sech");
        put("csch", "\\csch");
        
        // 同义词映射
        put("sin⁻¹", "\\arcsin");
        put("cos⁻¹", "\\arccos");
        put("tan⁻¹", "\\arctan");
        put("cosec", "\\csc");
        put("tg", "\\tan");
        put("ctg", "\\cot");
    }};

    /**
     * 判断是否是三角函数
     */
    public static boolean isTrigFunction(String text) {
        return TRIG_FUNCTIONS.containsKey(text.toLowerCase());
    }

    /**
     * 获取三角函数的LaTeX表示
     */
    public static String getLatexFunction(String functionName) {
        return TRIG_FUNCTIONS.getOrDefault(functionName.toLowerCase(), "\\" + functionName);
    }

    /**
     * 处理三角函数参数的特殊情况（如度数）
     */
    public static String processArgument(String argument) {
        if (argument.endsWith("°") || argument.endsWith("∘")) {
            return argument.substring(0, argument.length() - 1) + "^{\\circ}";
        }
        return argument;
    }
}